/**
  ************************************* 版权***********************************
  *
  *                 (C) 版权所有 2024,柴志强 所有权利
  *
  *
  * 文件名     :   rs485.c
  * 版  本     :    v1.0
  * 作  者     :   柴志强
  * 日  期     :   2024-02-26
  * 功  能     :
  *
  ******************************************************************************
 */

#include "rs485.h"
#include "fm33lc0xx_fl.h"
#include "uart.h"
#include "string.h"
#include "gpio.h"
#define RS485ReadDelay 100
//485回复数据是否输出
#define RS485Log 0

/* -------------------------------- begin  -------------------------------- */
/**
  * @函数名    RS485ReadData
  * @功  能    直接向485发送数据，并等待RS485ReadDelay延长时间，可从Rs485UartBuff取得数据Rs485UartBuffLenght数据长度
  * @参  数    data: [输入/出]
**			 dataLeng: [输入/出]
  * @返回值
  * @作  者    柴志强
  * @日  期    2024-02-29
 **/
/* -------------------------------- end -------------------------------- */

unsigned char RS485ReadData(unsigned char* data, unsigned int dataLeng) {

    //485相关
    Rs485OpenUartIT;; //打开中断
    Rs485PowerON; //打开电源
    Rs485ControlSend; //控制方向
    FL_DelayMs(1);//必须加延时，否则数据会出现00
    Rs485UartSendHex(data, dataLeng);
    FL_DelayMs(1); //必须加延时，否则仪表不会收到完全数据
    Rs485ControlRead;//切换485芯片为接受模式
    FL_DelayMs(1); //必须加延时，清除转换485芯片的时候造成错误数据
    Rs485UartBuffLenght = 0;
    memset(Rs485UartBuff, 0x00, UARTBUGGMAX);
    LED10ms;
    FL_DelayMs(RS485ReadDelay);
#if (RS485Log==1)
    uartSendHexData(UART0, Rs485UartBuff, Rs485UartBuffLenght);
#endif
    Rs485CloseUartIT; //关闭中断
    Rs485PowerOFF; //关闭电源
    return Rs485ReadSuccess;
}

